﻿//namespace DesignModeConsole.行为型.迭代器模式;

///// <summary>
///// 迭代器接口定义
///// </summary>
///// <typeparam name="E"></typeparam>
//public interface ITerator2<E>
//{
//    /// <summary>
//    /// 是否存在下一个元素
//    /// </summary>
//    /// <returns></returns>
//    bool HasNext();

//    /// <summary>
//    /// 迭代器索引往下移动一位
//    /// </summary>
//    void Next();

//    /// <summary>
//    /// 当前项
//    /// </summary>
//    /// <returns></returns>
//    E CurrentItem();
//}

///// <summary>
///// array迭代器
///// </summary>
///// <typeparam name="E"></typeparam>
//public class ArrayIterator2<E> : ITerator2<E>
//{
//    private int _cursor;
//    private readonly ArrayList2<E> _list;

//    public ArrayIterator2(ArrayList2<E> list)
//    {
//        this._cursor = 0;
//        this._list = list;
//    }

//    public bool HasNext()
//    {
//        return _cursor >= 0 && _cursor < _list.Count;
//    }

//    public void Next()
//    {
//        _cursor++;
//    }

//    public E CurrentItem()
//    {
//        if (_cursor >= _list.Count)
//            throw new IndexOutOfRangeException("索引超出界限");

//        return _list[_cursor];
//    }
//}

//public interface IList2<E>
//{
//    ITerator2<E> Iterator();
//}

//public class ArrayList2<E> : IList2<E>
//{
//    public ITerator2<E> Iterator()
//    {
//        return new ArrayIterator2<E>(this);
//    }

//    public int Count()
//    {
//        //return 1;
//    }
//}